package query

import (
	"context"
	"fmt"
	"math"

	"go.mongodb.org/mongo-driver/bson"
	"go.mongodb.org/mongo-driver/mongo"
)

// 展示复杂的and和or关系组合查询
func AdvanceAndOr(mongo *mongo.Database, ctx context.Context) {
	// 平时我们的条件都是具有隐式的and关系，但是因为同时需要使用两次$or，所以就需要显示使用and
	filter := bson.M{"$and": bson.A{bson.M{"$or": bson.A{bson.M{"int32": math.MaxInt32}, bson.M{"int32": math.MaxInt32 - 1}}}, bson.M{"$or": bson.A{bson.M{"boolean": true}, bson.M{"boolean": false}}}}}
	// 查询数据
	cur, _ := mongo.Collection("test").Find(ctx, filter)
	// 遍历数据
	for cur.TryNext(ctx) {
		result, _ := cur.Current.Elements()
		fmt.Println(result)
	}
	cur.Close(ctx)
}
